File transfer system, apparatus, method and computer readable medium storing file transfer program

ABSTRACT

A file transfer system including a relay apparatus is provided in which the relay apparatus includes: an incoming file sending part  15  which receives a file identifier I and a downloaded data amount O_R from a receive apparatus  50;  and a file storing part  13  which stores the file identifier and file data and passes file data according to the file identifier and the downloaded data amount to the incoming file sending part. The file data F(O_R) is sent to the receive apparatus.

TECHNICAL FIELD

[0001] The present invention relates to a file transfer technique fortransferring a file (information which has a given purpose). Moreparticularly, the present invention relates to a file transfer techniquein which file data is sent to a receive apparatus according to theamount of data which has been received by the receive apparatus. Theamount is provided from the receive apparatus. According to the filetransfer technique, the time required for sending and receiving a filebecomes short, and, time required for waiting until the receiveapparatus can start to receive the file does not increase in proportionto the file size and the number of relay apparatuses.

BACKGROUND ART

[0002] A system which transfers a file from a sending side terminal(which will be called a send apparatus hereinafter) to another terminalwhich is in a receiving side (which will be called a receive apparatushereinafter) by using a network is called a file transfer system.

[0003] As an example of a conventional file transfer system, there is amethod in which a file is directly sent from the send apparatus to thereceive apparatus. As another example, there is a method in which ashared server is provided such as an FTP server or an HTTP server whichincludes a part for storing the file and a part for distributing thestored file to a terminal according to a request from the terminal. Inaddition, the send apparatus stores the file in the shared server andthe receive apparatus receives the file from the shared server.

[0004] As an additional example, there is a method in which a file istransferred via a plurality of file relay apparatuses like E-mail.

[0005] As for the method in which the file is sent directly from thesend apparatus to the receive apparatus, there is a problem in that thesend apparatus and the receive apparatus should be activatedsimultaneously. In addition, as for the method in which the sharedserver is provided, although the send apparatus and the receiveapparatus are not necessarily activated simultaneously, there is aproblem in that file sending process by the send apparatus and filereceiving process by the receive apparatus take time when the sharedserver is located far from the send apparatus and the receive apparatus.

[0006] Further, as for the method in which the file is transferred via aplurality of file relay apparatuses, the problem of taking time for filesending by the send apparatus and file receiving by the receiveapparatus can be solved because the send apparatus and the receiveapparatus can send a file to a nearest file relay apparatus and receivea file from a nearest file relay apparatus. However, a first relayapparatus can not send a file to a second file relay apparatus of a nextstage until the first relay apparatus receives all of the file. Thereason is that the file relay apparatus is forced to stop transferring afile to the next stage at some midpoint when file transfer speed of afile relay apparatus or a send apparatus of a previous stage is slowerthan file transfer speed to a file relay apparatus or a receiveapparatus of a next stage. Thus, waiting time from the time when thesend apparatus starts to send a file until the receive apparatus canstart to receive the file increases in proportion to the file size andthe number of the relay file transfer apparatuses.

[0007] In addition, according to a conventional file transfer method, afile transfer can not be performed while suspending and resuming filetransfer at some midpoint. The reason is that, according to theconventional file transfer method, the relay apparatus can not send theamount of already stored data of the suspended file to the sendapparatus, and, the send apparatus can not send data following data ofthe amount to the relay apparatus.

DISCLOSURE OF THE INVENTION

[0008] It is an object of the present invention to provide a filetransfer system in which the time required for sending and receiving afile, and the waiting time until the receive apparatus can start toreceive a file is not proportionate to the file size and the number ofthe relay apparatuses.

[0009] It is another object of the present invention to provide a filetransfer system in which the send apparatus can suspend sending a fileat some midpoint and resume sending the file.

[0010] The file transfer system of the present invention includes a filestoring part, an originating file receiving part and an incoming filesending part. A send apparatus includes an originating file storing partand an originating file sending part. A receive apparatus includes anincoming file storing part and an incoming file receiving part.

[0011] A relay apparatus performs a store operation and a send operationindependently in which the store operation is to store data which isreceived from the send apparatus in the file storing part and the sendoperation is to send the stored data to the receive apparatus by usingthe incoming file sending part. Therefore, it can be started to send afile to the receive apparatus before completing file receiving from thesend apparatus. A relay apparatus includes an originating fileinformation receiving part and an incoming file information sendingpart.

[0012] The send apparatus includes an originating file informationsending part. The receive apparatus includes an incoming fileinformation receiving part.

[0013] The relay apparatus receives a file size from the send apparatusby the originating file information receiving part before receiving thefile, and associates the file size with the file identifier andregisters it in the file storing part.

[0014] In addition, the relay apparatus notifies the receive apparatusof the file identifier and the file size by the incoming fileinformation sending part before sending the file. The receive apparatusstores the file identifier and the file size received from the relayapparatus by the incoming file information receiving part in theincoming file storing part.

[0015] After the receive apparatus receives all data stored in the relayapparatus by the incoming file receiving part, the receive apparatuscompares the file size with received data amount. When these are not thesame, an operation of receiving data newly arrived to the relayapparatus is repeated. Thus, data transfer speed can be adjusted evenwhen the speed for sending the file to the relay apparatus from the sendapparatus is slower than the speed for receiving the file from the relayapparatus by the receive apparatus.

[0016] The relay apparatus may includes a transfer destinationdetermining part, a file relay information sending part, a relay filesending part, a file relay information receiving part and a relay filereceiving part. In this case, the relay apparatus judges whether thefile needs to be transferred to another relay apparatus on the basis ofthe destination address group of the file. When it is necessary totransfer the file, the relay apparatus determines relay apparatus groupto which the file should be transferred, and sends file relayinformation including a list of destination addresses, the fileidentifier and the file size.

[0017] A second relay apparatus which receives the file relayinformation from the relay apparatus of the previous stage by the filerelay information receiving part stores the file relay information inthe file information storing part, and receives data from the previousrelay apparatus by the relay file receiving part. After receiving alldata stored in the previous stage relay apparatus, the second relayapparatus compares the file size with received data. When these are notthe same, the second relay apparatus repeats an operation of receivingdata which is newly arrived to the previous stage relay apparatus.

[0018] Accordingly, since it becomes possible that the file may passthrough a plurality of relay apparatuses while the file is sent from thesend apparatus to the receive apparatus, each of the send apparatus andthe receive apparatus can communicate with the nearest relay apparatusfrom the viewpoint of network route. Therefore, file sending can becompleted fast for the send apparatus and file receiving can becompleted fast for the receive apparatus.

[0019] The file storing part of the relay apparatus includes a partwhich stores send status indicating whether the send apparatus suspendsfile sending, the send file receiving part includes a part which changesthe send status stored in the file storing part to suspending status,the incoming file sending part includes a part which sends the file sendstatus first and sends data next when sending a file to the receiveapparatus. The originating file sending part of the send apparatusincludes a part which suspends file sending. The incoming file receivingpart of the receive apparatus may includes a part which receives thefile send status from the relay apparatus, suspends file receiving whenthe file send status is suspending status, and receive data ofunreceived part of the file when the file send status is not suspendingstatus.

[0020] In this case, since it is transmitted to the relay apparatus andthe receive apparatus that the send apparatus suspends file sending, therelay apparatus and the receive apparatus need not continue to wait forcontinued data even after file sending is suspended.

[0021] The relay file sending part of the relay apparatus includes apart which sends the file send status first, and, then, sends file data.The relay file receiving part may include a part which receives the filesend status from a relay apparatus of a previous stage, suspendsreceiving when the file send status is suspending status, receives datawhich is not yet received in the file when the file send status is notsuspending status. In this case, since it is transmitted to a pluralityof relay apparatuses which relay the file that the send apparatussuspends file sending, it is eliminated that each relay apparatuscontinues to wait for continued data even though file sending issuspended.

[0022] The relay apparatus may includes a received data amountresponding part. The originating file receiving part includes a partwhich changes the file send status to a status indicating the status isnot suspending status and adds received data to the tail end of thealready stored file when the file send status stored in the file storingpart is suspending status and when the file corresponding to the fileidentifier already exists. The originating file sending part of the sendapparatus may include a part which inquires about a received data amountof the file to the relay apparatus, and sends data which follows data ofnotified data amount to the relay apparatus. In this case, the sendapparatus can resume file sending from continued data, and the file sendstatus which is stored in the file storing part of the relay apparatusbecomes no suspending status. Therefore, the receive apparatus canresume file receiving. The relay file receiving part of the relayapparatus may includes a part which receives the file send status from arelay apparatus of the previous stage, and changes the file send statusof the file stored in the file storing part to a status indicating thatthe status is not suspending status when received file send status isnot suspending status. In this case, it is transmitted to each relayapparatus that the send apparatus resumes file sending and the sendstatus stored in the file storing part in each relay apparatus becomesno suspending status. Therefore, file transfer between the relayapparatus resumes.

[0023] The present invention can be formed as the relay apparatus usedin the file transfer system. In this case, the relay apparatus includesthe incoming file sending part which receives the file identifier and adownloaded data amount from the receive apparatus, and a file storingpart which stores the file identifier and file data of the file whichare associated with each other and passes file data according to thefile identifier and the downloaded data amount to the incoming filesending part. The incoming file sending part sends file data accordingto the downloaded data amount to the receive apparatus.

[0024] The present invention can be formed as each of the send apparatusand the receive apparatus used in the file transfer system.

[0025] In addition, the present invention can be formed as a filetransfer method. In this case, the file transfer method includes a firststep of generating a file identifier used for identifying the file whenreceiving a request of file sending, a second step of receiving a filesize from the send apparatus before receiving data of the file andstoring the file size and the file identifier which are associated witheach other, a third step of requesting the send apparatus to send filedata until received data reaches the file size, a fourth step of sendingthe file identifier and the file size to the receive apparatus beforesending the file data to the receive apparatus, a fifth step of sendingthe file data to the receive apparatus until data amount received by thereceive apparatus reaches the file size.

[0026] Further, the present invention can be formed as a computerreadable medium storing a program for executing the above-mentionedmethod, and as the program.

[0027] Other objects, features and advantages of the present inventionwill become more apparent from the following detailed description whenread in conjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

[0028]FIG. 1 is a schematic block diagram showing whole configuration ofa file transfer system of a first embodiment;

[0029]FIG. 2 is a flowchart showing an outline of processing flow of thefirst embodiment;

[0030]FIG. 3 is a schematic block diagram showing whole configuration ofa file transfer system of a second embodiment;

[0031]FIG. 4 is a flowchart showing an outline of processing flow of thesecond embodiment;

[0032]FIG. 5 is a schematic block diagram showing whole configuration ofa file transfer system of a third embodiment;

[0033]FIG. 6 is a flowchart showing an outline of processing flow of thethird embodiment;

[0034]FIG. 7 is a schematic block diagram showing whole configuration ofa file transfer system of a fourth embodiment;

[0035]FIG. 8 is a flowchart showing an outline of processing flow of thefourth embodiment.

PREFERRED EMBODIMENTS FOR CARRYING OUT THE INVENTION

[0036] In the following, embodiments of the present invention will bedescribed with reference to figures.

[0037] [First Embodiment]

[0038] The first embodiment of the present invention will be describedin the following.

[0039]FIG. 1 is a block diagram showing the whole configuration of thefile transfer system of the embodiment. As shown in this figure, thefile transfer system includes a send apparatus 30, a receive apparatus50 and a relay apparatus 10 which is connected to the send apparatus 30and the receive apparatus 50 such that the relay apparatus 10 canexchange data with the send apparatus 30 and the receive apparatus 50.Each of the send apparatus 30, the receive apparatus 50 and the relayapparatus 10 is realized by launching a program based on the followingprocessing methods on a computer which has a network interface.

[0040] The program of the invention can be stored in a CD-ROM and thelike, and can be distributed. In addition, the program can bedistributed by allowing download via a network. By installing theprogram which is stored in the CD-ROM or downloaded in a computer, thecomputer can be used as the send apparatus, relay apparatus or thereceive apparatus of the present invention.

[0041] The send apparatus 10 includes a file originating informationsending part 31, an originating file storing part 33 and an originatingfile sending part 32.

[0042] The file originating information sending part 31 sends, to therelay apparatus 10, file originating information which includes acharacter string representing originating file information sending, afile size L of a file to be sent and an destination IP address R. Inaddition, the file originating information sending part 31 receives thefile identifier I and passes the file identifier I to the originatingfile storing part 33.

[0043] The originating file storing part 33 reads file data which isstored in itself or in other storing apparatus on the basis of the fileidentifier I, and passes the file data to the originating file sendingpart 32 with the file identifier I.

[0044] The originating file sending part 32 receives the file data fromthe originating file storing part 33 with the file identifier I, andsends the file data and the file identifier I to the relay apparatus 10with a character string representing originating file sending.

[0045] The relay apparatus 10 includes a file originating informationreceiving part 11, an originating file receiving part 12, a file storingpart 13, a file incoming information sending part 14 and an incomingfile sending part 15.

[0046] The file originating information receiving part 11 can receivethe file size L and the destination address R from the send apparatus,and can generate the file identifier I and a file path P and can providethe file identifier I and the file path P to the file storing part 13.

[0047] The originating file receiving part 12 can receive the fileidentifier I and the file data F(x) from the send apparatus, and canprovide these to the file storing part 13, wherein “x” means the amountof data (offset) which has been read and sent to the relay part in thefile data.

[0048] The file incoming information sending part 14 can receive a POSTmethod sent from the receive apparatus 50, and can obtain an IP addressR of the receive apparatus. In addition, the file incoming informationsending part 14 has functions of searching a file table in the filestoring part 13 for a pair of the file identifier I and the file size Lwhich are associated with the IP address R, obtaining the pair, andnotifying the receive apparatus 50 of the pair of the file identifier Iand the file size L.

[0049] The incoming file sending part 15 can receive the file identifierI and a downloaded data amount O_R from the receive apparatus 50, andcan receive file data F(O_R) according to the file identifier I and thedownloaded data amount O_R from the file storing part 13. In addition,the incoming file sending part 15 has a function of sending the filedata F(O_R) to the receive apparatus 50. The downloaded data amount isthe amount of data which has been received by the receive apparatus 50in the file data.

[0050] The file storing part 13 has functions of storing the fileidentifier I, the file path P, the file size L and the destination IPaddress R sent from the file originating information receiving partwhile associating these with each other, storing the file data F′ sentfrom the originating file receiving part in an area specified by thefile path P, passing the file identifier I and the file size L to thefile incoming information sending part 14 according to the destinationaddress R from the file incoming information sending part 14, andpassing the file data F(O_R) corresponding to the file identifier I andthe downloaded data amount O_R from the incoming file sending part 15 tothe incoming file sending part 15.

[0051] The receive apparatus 50 includes a file incoming informationreceiving part 51, an incoming file storing part 53 and an incoming filereceiving part 52.

[0052] The file incoming information receiving part 51 has functions ofreceiving file incoming information which includes the file identifier Iand the file size L from the relay apparatus 10, determining a file pathP′ which indicates storing destination of the file on the basis of thefile identifier I, and providing the file identifier I, the file path P′and the file size L to the incoming file storing part 53.

[0053] The incoming file storing part 53 has functions of passing thefile identifier I and the downloaded data amount O_R of the file on thebasis of the file identifier I, the file path P′ and the file size Lfrom the file incoming information receiving part 51 to the incomingfile receiving part 52, receiving the file data F(O R) which is a partor all of the file data from the incoming file receiving part 52, andstoring the file data F(O_R).

[0054] The incoming file receiving part 52 has functions of receivingthe file identifier I and the downloaded data amount O_R of the filefrom the incoming file storing part 53, passing these to the relayapparatus 10, receiving the file data F(O R) sent from the relayapparatus 10 according to the file identifier I and the downloaded dataamount O_R of the file, and passing it to the incoming file storing part53.

[0055] In the relay apparatus 10, an HTTP server process is launched,and a relay apparatus program which is implemented as a CGI program or aservlet can be launched by an HTTP post method for an URL. The URL istaught to the send apparatus 30 and the receive apparatus 50 beforehand.

[0056] In addition, in the relay apparatus 10, a relational databasemanagement system (RDBMS) is launched, and a table is prepared forstoring a pair of the file identifier, the file path, the file size andthe destination IP address. This table of the database is called a filetable. The file table and a disk area in which the file is actuallystored can be configured as the file storing part 13.

[0057] Each of the parts 31-33, 11-15, 51-53 is not necessarily anindependent part. These may be realized by a microprocessor and astoring apparatus which stores a program.

[0058] Next, a processing procedure according to this embodiment will bedescribed with reference to FIG. 2. FIG. 2 is a flowchart showing anoutline of the processing procedure of the embodiment.

[0059] First, processes performed between the send apparatus 30 and therelay apparatus 10 will be described. The send apparatus 30 stores acharacter string representing “originating file information send”, thefile identifier I, the file size L of a file to be sent and adestination IP address D in an entity body of a POST method of an HTTPrequest while separating them by line feeds, and sends them to the relayapparatus 10 in step 101.

[0060] In the file originating information receiving part 11 which isrealized by a relay apparatus program launched by an HTTP server, whenthe first line of the entity body of the POST method received from thesend apparatus 30 is the character string representing “originating fileinformation send”, the file originating information receiving part 11reads the file size L of the file to be sent and the destination IPaddress R which follows the character string, generates a unique valuefor the file based on time information, and assigns this value as thefile identifier I in step 102.

[0061] Then, the file originating information receiving part 11determines the file path P which indicates storing destination of thefile on the basis of the file identifier I, and sends the fileidentifier I, the file path P, and the file size L and the destinationaddress R to the file storing part 13 in step 103.

[0062] The file storing part 13 stores these information in the filetable in step 104.

[0063] In addition, the file originating information receiving part 11notifies the send apparatus 30 of a character string representing thefile identifier I by including the character string in an entity body ofan HTTP response in step 105.

[0064] When the send apparatus 30 receives the entity body of the HTTPresponse including the character string representing the file identifierI, the send apparatus 30 reads the file identifier I from it, stores acharacter string indicating “originating file send” and the fileidentifier I in an entity body of a POST method of an HTTP request byseparating them by a line feed, and stores binary sequence of file datacorresponding to the file identifier I and starts to send it to therelay apparatus 30 in step 106.

[0065] The process in the send apparatus 30 is performed in thefollowing way. First, the file originating information sending part 31of the send apparatus 30 receives the entity body of the HTTP responseincluding the file identifier I, and, the file originating informationsending part 31 reads the file identifier I, passes the file identifierI to the originating file storing part 33. The originating file storingpart 33 reads file data F(x) on the basis of the file identifier I, andpasses the file identifier I and the file data to the originating filesending part 32. The originating file sending part 32 stores a characterstring representing “originating file sends and the file identifier Iwhile separating by a line feed, after that, stores binary sequence ofthe file data in the entity body of the POST method of the HTTP request,and starts to send the data to the relay apparatus 10.

[0066] In the relay apparatus 10 which is realized by a relay apparatusprogram launched by the HTTP server, when the first line of the entitybody of the POST method is a character string representing “originatingfile send”, the originating file receiving part 12 reads the fileidentifier I which follows the character string, and obtains a file pathP which is stored by being associated with the file identifier from thefile table stored in the file storing part 13. In addition, theoriginating file receiving part 12 reads the file data stored in theentity body following the file identifier, and starts to store the filedata in an area of the file storing part 13 which is specified by thefile path P in step 107. In the same way, the file data continues to bestored until all of the file data is stored in the file storing part 13in step 108.

[0067] When all of the file data is stored in the file storing part 13,the relay apparatus 10 notifies the send apparatus 30 of data storingcompletion in steps 119 and 120. The send apparatus 30 ends filetransfer process according to the notification.

[0068] Next, processes performed between the receive apparatus 50 andthe relay apparatus 10 will be described.

[0069] The receive apparatus 50 stores a character string representing“incoming file information request” in an entity body of a POST methodof an HTTP request, and sends the HTTP request to the relay apparatus 10by using an URL which has been taught beforehand as send destination instep 109.

[0070] In the relay apparatus 10 which is realized by a relay apparatusprogram launched by the HTTP server, when the first line of the entitybody of the POST method sent from the receive apparatus 50 is acharacter string representing “incoming file information request”, thefile incoming information sending part 14 obtains an IP address R of anHTTP client which is notified by HTTP, searches the file table of thefile storing part 13 for a pair of the file identifier I and the filesize L which are stored in concert with the IP address R in step 110,and obtains these in step 111. Then, the file incoming informationsending part 14 stores the pair of the file identifier I and the filesize L in an entity body of an HTTP response for the receive apparatus50 while separating the pair by a line feed, and returns the HTTPresponse to the receive apparatus 50 in step 112.

[0071] The receive apparatus 50 reads the pair of the file identifier Iand the file size L from the entity body of the HTTP response,determines a file path P′ which is associated with the file identifier Iand is file storing destination, and stores file information includingthe file identifier I, the file size L and the file path P′ in step 113.For example, the file information can be stored as an array of astructure which has these information as elements. In addition, the fileinformation may includes received data amount O_R for the file (which is0 for the first time around).

[0072] Next, the receive apparatus 50 stores character stringsrepresenting “incoming file request”, the file identifier I, receiveddata amount O_R (which is 0 for the first time around) in the entitybody of the POST method by separating the character strings by linefeeds, and sends the POST method to the relay apparatus 10 in step 114.

[0073] Next, when the first line of the entity body of the POST methodis a character string representing “incoming file request”, the relayapparatus 10 which is realized by the relay apparatus program launchedby the HTTP server reads the file identifier I and received data amountO_R which follows the character string, obtains the file path P which isstored in combination with the file identifier I from the file table ofthe file storing part 13, reads file data which follows data of thereceived data amount O_R of the file corresponding to the file path P instep 116, stores the file data in an entity body of an HTTP response andreturns the HTTP response to the receive apparatus 50 in step 117.

[0074] The receive apparatus 50 which receives the HTTP response obtainsthe file path P′ of the file from the stored file information, addscontent of the entity body of the HTTP response to the file data whichhas been stored in the file path P′ in step 118, wherein the content isfile data following the received data amount O_R in the file.

[0075] The procedures from the step 114 to step 118 are repeated untilthe received data amount O_R reaches the file size L (L1).

[0076] In the case that receive speed of the receive apparatus 50exceeds send speed of the send apparatus 30 and the receive apparatus 50completes receiving the file data stored in the relay apparatus 10before the send apparatus 30 completes sending all data, the receiveapparatus 50 repeatedly requests the relay apparatus 10 to sendremaining data until the received data amount O_R reaches the file sizeL in step 114, L1.

[0077] Although a case that a file is transferred to one receiveapparatus has been described as an example in the above description, thepresent invention can be applied for a case that a file is transferredto a plurality of receive apparatuses (multicast). In this case,destination address group D including addresses R₁-R_(N) of a pluralityof receive apparatuses, instead of destination address R, may be sent tothe relay apparatus 10 from the send apparatus 30. The relay apparatus10 may store each of the addresses R₁-R_(N) in the file table whileassociating it with the file identifier I, the file path P and the filesize L.

[0078] [Second Embodiment]

[0079] In the following, a second embodiment of the present inventionwill be described. This embodiment is different from the firstembodiment in that a file is transferred form the send apparatus to thereceive apparatus via a plurality of relay apparatuses.

[0080] In this embodiment, the send apparatus 30, the receive apparatus50 and the relay apparatus 10′ are the same as the send apparatus 30,the receive apparatus 50 and the relay apparatus 10 in the firstembodiment basically. Different points of the second embodiment from thefirst embodiment are that a plurality of relay apparatuses are providedbetween the send apparatus and the receive apparatus, and each of therelay apparatuses has a transfer destination determining part 16 whichincludes a table of a database storing a pair of a network part of an IPaddress and a URL of the transfer destination relay apparatus. Thistable is called routing table”. When “default” is stored in a fieldwhere the network part of the IP address should be input, the “default”means an address which does not correspond to any other rows of therouting table. When “local” is stored in a field where the URL of thetransfer destination relay apparatus should be input, it means that dataneed not be sent to other relay apparatus.

[0081]FIG. 3 is a schematic block diagram showing a whole structure ofthe file transfer system of this embodiment.

[0082] The send apparatus 30 and the receive apparatus 50 are connectedvia relay apparatuses 10′A, 10′B, 10′C in this order for sending data.As for the relay apparatuses 10′A, 10′B, 10′C, since the configurationsare the same, the relay apparatus 10′A will be described as arepresentative.

[0083] In the figures of this application, parts which have the samenumber have the same name wherein A, B or C is added to numbers of someparts. For example, each of 11, 11A, 11B, and 11C indicates a part namedas the file originating information receiving part.

[0084] The relay apparatus 10′A includes a file originating informationreceiving part 11A, an originating file receiving part 12A, a filestoring part 13A, a file incoming information sending part 14A and anoriginating file sending part 15A. These parts are the same ascorresponding parts in the relay apparatus 10 in the first embodiment.In addition, the relay apparatus 10′A includes a transfer destinationdetermining part 16A, a file relay information sending part 17A, a relayfile sending part 18A, a file relay information receiving part 19A and arelay file receiving part 20A.

[0085] The transfer destination determining part 16A includes a routingtable for storing a pair of a network part of an IP address and a URL ofthe transfer destination relay apparatus, and has a function ofreceiving an destination address from the file relay information sendingpart 17A and returns a URL of a transfer destination relay apparatuscorresponding to the destination address to the file relay informationsending part 17A.

[0086] The file relay information sending part 17A has functions ofreceiving a file identifier I, a file size L and a destination address Rfrom the file storing part 13A, passing the destination address R to thetransfer destination determining part, receiving the URL of the transferdestination relay apparatus corresponding to the destination address R,and sends file relay information to the URL.

[0087] The relay file sending part 18A has functions of receiving thefile identifier I and received data amount (which is represented by O_Min the relay apparatus 10′A) from a relay apparatus of a next stage,passing the file identifier I and the received data amount to the filestoring part 13A, receives file data F(O_M) sent from the file storingpart 13A, and sending the file data to the next stage relay apparatus.

[0088] The file relay information receiving part 19A has functions ofreceiving file relay information from a relay apparatus of a previousstage, generating a file path PA on the basis of a file identifier inthe information, and passing the file path PA with the file relayinformation to the file storing part 13A.

[0089] The relay file receiving part 20A has functions of receiving thefile data sent from the previous stage relay apparatus, passing the filedata to the file storing part 13A, and, receiving the file identifierand received data amount of the previous stage relay apparatus from thefile storing part and passing these to the previous stage relayapparatus.

[0090] Next, process procedure of the present embodiment will bedescribed with reference to FIG. 4. FIG. 4 is a flowchart showing anoutline of process flow of this embodiment.

[0091] The send apparatus 10 notifies the nearest relay apparatus 10′Aof a file size and a destination IP address of a file to be sent in thesame way as that of the first embodiment in steps 201-204.

[0092] The relay apparatus 10′A assigns a unique value as the fileidentifier I for the file on the basis of time information and the IPaddress P of the relay apparatus 10′A. Then, the relay apparatus 10′Aregisters the file identifier I, the file size L and the destination IPaddress R in the file storing part 13A in the same way as the firstembodiment, and notifies the send apparatus 30 of the file identifier Iin step 204.

[0093] In addition, the relay apparatus 10′A checks the destination IPaddress R against the network part of the routing table 16A. When thereis a match, the relay apparatus 10′A obtains URL “M” of a correspondingtransfer destination relay apparatus 10′B in step 205.

[0094] Next, the relay apparatus 10′A sends relay file information tothe URL “M” in step 206, wherein the relay file information includescharacter strings representing “relay file information send”, the fileidentifier I, the file size L and the destination IP address R passingthrough the relay apparatus 10′B which are separated by line feeds andare stored in an entity body of a POST method of an HTTP request.

[0095] In the relay apparatus 10′B which received the POST method of theHTTP request, when the first line of the entity body of the POST methodis a character string representing “relay file information send”, therelay apparatus program launched by the HTTP server reads the fileidentifier I, the file size L and the destination IP address R whichfollows the character string. In addition, the relay apparatus 10′Bdetermines a file path PB to which the file is stored on the basis ofthe file identifier, and stores the file identifier I, the file path PB,the file size L and the destination address R in the file storing part13B (in the file table more specifically). In addition, the relayapparatus 10′B checks the destination IP address R against the networkpart of the routing table 16B. When there is a match, the relayapparatus 10′B obtains URL “N” of a corresponding transfer destinationrelay apparatus 10′C in step 207.

[0096] Next, the relay apparatus 10′B sends relay file information tothe URL “N” in step 208, wherein the relay file information includescharacter strings representing “relay file information”, the fileidentifier I, the file size L and the destination IP address R via therelay apparatus 10′B which are separated by line feeds and are stored inan entity body of the POST method of the HTTP request.

[0097] Accordingly, the file information reaches finally the relayapparatus which is the nearest to the receive apparatus 50 and takescharge of the destination address R.

[0098] On the other hand, the send apparatus 30 starts to send contentdata (which will be called “file data”) of the file to the nearest relayapparatus 10′A while establishing association with the file identifier Iin the same way as that of the first embodiment in step 209.

[0099] The relay apparatus 10′A reads the sent file data, starts tostore the file data in an area of the file storing part 13A which isspecified by the file path PA. Storing of the file data is repeateduntil all of the file data is stored in the file storing part 13A. Whenall of the file data is stored in the file storing part 13A, the relayapparatus 10′A notifies the send apparatus 30 of completion of datastoring in step 211. The send apparatus 30 ends the file transferprocess according to the notification.

[0100] When the relay apparatuses 10′B and 10′C other than the nearestrelay apparatus receives “relay file information”, each of the relayapparatuses stores “relay file request”, the file identifier I, receiveddata amount O_M or O_N (which is 0 in the first time) which areseparated by line feeds, sends these to the previous stage relayapparatus 10′A, 10′B respectively in steps 212 and 213.

[0101] When the first line of the entity body of the POST method is acharacter string representing “relay file request”, the relay apparatusprogram of the relay apparatus 10′A or 10′B of the previous stagelaunched by the HTTP server in response to the above-mentioned relayfile request reads the file identifier I and received data amount O_M orON which follow the character string, obtains the file path PA or PBwhich is associated with the file identifier I from the file table ofthe file storing part 13A or 13B, stores file data following the filedata of the file path PA or PB of the received data amount O_M or O_N inan entity body of an HTTP response in steps 214 and 215, and sends it tothe relay apparatus 10′B or 10′C of the next stage in steps 216 and 217.

[0102] When received file data which is stored in the previous stage,each of the relay apparatuses 10′B and 10′C other than the relayapparatus 10′A which is nearest to the send apparatus 30, requests filedata which is remained in the relay apparatus. In response to this, eachof the relay apparatuses 10′A and 10′B sends the file data to the relayapparatuses 10′B and 10′C respectively in response to the request (L2,L3). This process is repeated until the received data amount O_M, O_Nreaches the file size L which has been notified of by the file relayinformation.

[0103] The receive apparatus 50 makes an inquiry, to the nearest relayapparatus 10′C, about newly arriving file information to the destinationaddress R in step 218. In response to this inquiry, the relay apparatus10′C sends the file identifier I and the file size L to the receiveapparatus 50 in step 219. The receive apparatus 50 stores the fileidentifier I and the file size L as file information in step 220. Inaddition, the receive apparatus 50 requests, to the relay apparatus10′C, transfer of file data which is associated with the file identifierI and is stored in the relay apparatus 10′C in step 221. In response tothis request, the relay apparatus 10′C sends the file data to thereceive apparatus 50 in step 222.

[0104] If the received data amount O_R does not reach the file size Leven when the receive apparatus 50 completes receiving data stored inthe relay apparatus 10′C, the receive apparatus 50 repeatedly requestsremaining file data to the nearest relay apparatus 10′C until thereceived data amount O_R reaches the file size L (L1).

[0105] Although a case that a file is transferred to one receiveapparatus has been described as an example in the above description, thepresent invention can be applied for a case that a file is transferredto a plurality of receive apparatuses (multicast). In this case,destination address group D including addresses R₁-R_(N) of a pluralityof receive apparatuses, instead of destination address R, may be sent tothe relay apparatus 10′ from the send apparatus 30. The relay apparatus10′ may store each of the addresses R₁-R_(N) in the file table byassociating it with the file identifier I, the file path P and the filesize L.

[0106] According to the file transfer system of this embodiment, aplurality of relay apparatuses can be provided between the sendapparatus and the receive apparatus. Even when the send apparatus andthe receive apparatus are far apart with respect to network route, thesend apparatus can send a file to a relay apparatus nearest to the sendapparatus, and the receive apparatus can receive a file from a relayapparatus nearest to the receive apparatus. Thus, the time required forsending and receiving can be decreased.

[0107] [Third Embodiment]

[0108] Next, the third embodiment will be described.

[0109]FIG. 5 is a schematic block diagram showing a whole structure ofthe file transfer system of this embodiment. In the third embodiment,the send apparatus 30, the receive apparatus 50 and a relay apparatus10″ are the same as the send apparatus 30, the receive apparatus 50 anda relay apparatus 10 of the first embodiment basically. Following pointsare different from the first embodiment. That is, in this embodiment, afield (which will be called “send suspending field”) which records filesend suspending in the file table of the file storing part 13′ of therelay apparatus 10″ is added, in which, when the send apparatus 30suspends sending file, data representing send status is recorded in the“send suspending field”, for example, a value or a character stringrepresenting “true” is recorded. When the file sending is not suspended,a value or a character string representing “false” is recorded. Inaddition, the relay apparatus 10″ includes a received data amountresponse part 21 for sending an uploaded data amount to the sendapparatus 30, wherein the uploaded data amount is a data amount of filedata which has been sent to the relay apparatus from the send apparatusin file data to be sent.

[0110] Next, the process procedure of this embodiment will be describedwith reference to FIG. 6. FIG. 6 is a flowchart showing an outline of aprocess flow of this embodiment.

[0111] In this embodiment, the process PR which is indicated by thediagonally shaded area in FIG. 6 is the same as the correspondingprocess of the first embodiment which is enclosed in a rectangle ofbroken lines in FIG. 2. In the process, the send apparatus 30 sends theoriginating file information send to the relay apparatus 10″. Inresponse to this, the file identifier is sent from the relay apparatus10″ to the send apparatus 30. In addition, the receive apparatus 50sends the incoming file information request to the relay apparatus 10″.In response to this request, the relay apparatus 10″ sends the fileidentifier and the file size as the incoming file information to thereceive apparatus 50. The receive apparatus 50 stores these as fileinformation.

[0112] When the send apparatus suspends file sending in step 301, avalue representing “true” which indicates send suspending status isrecoded in the field of the send suspending status in steps 302, 303.

[0113] The relay apparatus 10″ which is realized by the relay apparatusprogram launched by the HTTP server receives an incoming fileinformation request (a POST method of an HTTP request) from the receiveapparatus 50 in step 304. When the first line of the entity body is acharacter string representing “incoming file request”, the relayapparatus 10″ reads the file identifier I and the received data amountO_R which are stored in the entity body in step 305. In addition, therelay apparatus 10″ obtains, from the file table of the file storingpart 13, send status Z and the file path P which are stored with thefile identifier I wherein the file identifier I is associated with thesend status Z and the file path P in step 306. Then, the relay apparatus10″ stores the send suspending status in an entity body of an HTTPresponse and send the HTTP response to the receive apparatus 50 in step307.

[0114] The above-mentioned process is repeated until the received dataamount O_R reaches the file size L (L4).

[0115] The receive apparatus 50 which received the HTTP responseregisters file information in step 308, and reads the value Z of sendsuspending status from the first line of the entity body. When the valueis “true”, it is suspended to receive a file. When the value is “false”,the receive apparatus 50 further sends an incoming file request to therelay apparatus 10″ in step 316. When the first line of the entity bodyof the POST method is a character string representing “incoming filerequest”, the relay apparatus 10″ reads the file identifier I and thereceived data amount O_R which are stored following the characterstring, reads the file path P which is associated with the fileidentifier I from the file table of the file storing part 13 in step317. In addition, the relay apparatus 10″ reads file data following thereceived data amount of the file corresponding to the file path P fromthe file storing part 13′ in step 318, and stores the file data in anentity body of an HTTP response and returns the HTTP response to thereceive apparatus 50 in step 319.

[0116] The receive apparatus 50 which received the HTTP response obtainsa file path P′ of the file from the stored file information, and storesthe content of the entity body of the HTTP response by adding thecontent to file data already stored in the file path P′ as continueddata in step 320, wherein the content is file data F(O_R) which followsthe received data amount O_R.

[0117] The above-mentioned process is repeated until the received dataamount reaches the file size L (L5).

[0118] When resuming file sending, the send apparatus 30 storescharacter strings which represent a stored data amount O_S and the fileidentifier I in an entity body of a POST method of an HTTP request byseparating the character strings by a line feed, and sends the HTTPrequest to the relay apparatus 10″ in step 309.

[0119] When the first line of the entity body of the POST method is acharacter string representing “stored data amount”, the relay apparatus10″ realized by a relay apparatus program launched by the HTTP serverreads the following file identifier I in step 310, obtains the file pathP registered with the file identifier which is associated with the filepath P from the file table in step 311. Then, the relay apparatus 10″stores the amount of data stored in the file path P in the entity bodyof the HTTP response and returns the HTTP response to the send apparatus30 in step 312.

[0120] The send apparatus 30 reads the stored data amount O_S from theentity body of the HTTP response from the relay apparatus 10″, andstores character strings representing “originating file” and the fileidentifier I in an entity body of a POST method of an HTTP request whileseparating the character strings by a line feed. After that, the sendapparatus 30 stores file-data F(O_S) (for example, binary sequence)which follows data of the “stored data amount” of the file data in theentity body, and starts to send the data to the relay apparatus 10″ instep 313.

[0121] When the first line of the entity body of the POST method is acharacter string representing “originating file”, the relay apparatus10″ reads the file identifier, obtains the file path which is registeredwith the file identifier which is associated with the file path, readsfile data stored in the entity body and starts to store the file datasuch that the file data follows the tail end of data already stored inthe file path in step 314. In addition, the relay apparatus 10″ changesthe value Z of the send suspending status to “false” in step 315.

[0122] When all of the file data is stored in the file storing part 13,that is, when the uploaded file data O_S reaches the file size L, therelay apparatus 10″ notifies the send apparatus 30 of completion of datastoring in step 321 and 322. In response to the notification, the sendapparatus 30 ends file transfer process.

[0123] Although a case that a file is transferred to one receiveapparatus has been described as an example in the above description, thepresent invention can be applied for a case that a file is transferredto a plurality of receive apparatuses (multicast). In this case,destination address group D including addresses R₁-R_(N) of a pluralityof receive apparatuses, instead of destination address R, may be sent tothe relay apparatus 10″ from the send apparatus 30. The relay apparatus10″ may store each the addresses R₁-R_(N) in the file table byassociating it with the file identifier I, the file path P and the filesize L.

[0124] According to the file transfer system, since the relay apparatushas a part which stores the send status of a file and sends the sendstatus to the receive apparatus, the receive apparatus which performsreceive operation concurrently with operation of the send apparatus canrecognize that sending is suspended when the send apparatus suspendssending at some midpoint, so that the receive apparatus can suspendreceive operation even if the amount of received data does not reach thefile size yet. In addition, since the relay apparatus includes a partfor sending stored file data amount in response to inquiry from the sendapparatus, the send apparatus can resume file sending from the start ofthe remained file data. Further, since the receive apparatus includes apart which notifies the relay apparatus of the received data amount andreceives continued data from the relay apparatus, the receive apparatuscan resume file receiving from the start of the remained file data.

[0125] [Fourth Embodiment]

[0126] A forth embodiment of the present invention will be described inthe following.

[0127] The send apparatus, the receive apparatus and the relay apparatusof this embodiment as shown in FIG. 7 have all features which areincluded in the send apparatus, the receive apparatus and the relayapparatus of the second embodiment. The different point is that each ofthe relay apparatuses 10′″A, 10′″B and 10′″C includes received dataamount response part 21 (21A, 21C) described in the above-mentionedthird embodiment.

[0128] The process procedure of this embodiment will be described withreference to FIG. 8. FIG. 8 is a flowchart showing an outline ofprocesses of this embodiment.

[0129] The send apparatus 30 notifies the relay apparatus 10′″A which isthe nearest to the send apparatus of the file size and the destinationIP address of the file to be sent in the same way as the firstembodiment in step 401.

[0130] The relay apparatus 10′″A assigns a unique value to the file asthe file identifier on the basis of time information and the IP addressR of the relay apparatus 10′″A in step 402. Then, the relay apparatus10′″A registers the file identifier I, the file size L and thedestination IP address R in the file storing part 13′A in the same wayas the first embodiment in step 403, and notifies the send apparatus 30of the file identifier I in step 404.

[0131] In addition, the relay apparatus 10′″A checks the destination IPaddress R against the network part of the transfer destinationdetermining part (the routing table) 16A. When there is a match, therelay apparatus 10′″A obtains URL “M” of a corresponding transferdestination relay apparatus 10′″B in step 405.

[0132] Next, the relay apparatus 10′″A sends relay file information tothe URL “M” in step 406, wherein the relay file information includescharacter strings representing “relay file information send”, the fileidentifier I, the file size L and the destination IP address R passingthrough the relay apparatus 10′″B which are separated by line feeds andare stored in an entity body of a POST method of an HTTP request.

[0133] In the relay apparatus 10′″B which received the POST method ofthe HTTP request, when the first line of the entity body of the POSTmethod is a character string representing “relay file information send”,the relay apparatus program launched by the HTTP server reads the fileidentifier I, the file size L and the destination IP address R whichfollows the character string. In addition, the relay apparatus 10′″Bdetermines a file path PB to which the file is stored on the basis ofthe file identifier, and stores the file identifier I, the file path PB,the file size L and the destination address R in the file storing part13′B (in the file table, more specifically). In addition, the relayapparatus 10′″B checks the destination IP address R against the networkpart of the transfer destination determining part (the routing table)16B. When there is a match, the relay apparatus 10′″B obtains URL “N” ofa corresponding transfer destination relay apparatus 10′″C.

[0134] Next, the relay apparatus 10′″B sends relay file information tothe URL “N” in step 407, wherein the relay file information includescharacter strings representing “relay file information”, the fileidentifier I, the file size L and the destination IP address R passingthrough the relay apparatus 10′″C which are separated by line feeds andare stored in an entity body of the POST method of the HTTP request.

[0135] Accordingly, the file information reaches finally the relayapparatus 10′″C which is the nearest to the receive apparatus 50 andwhich takes charge of the destination address R.

[0136] On the other hand, the send apparatus 30 stores a characterstring representing “originating file send”, the file identifier I andcontent data of the file in an entity body of a POST method, and startsto send it to the nearest relay apparatus 10′″A in step 408.

[0137] When the first line of the entity body of the post method is acharacter string representing “originating file send”, the relayapparatus 10′″A reads the following file identifier I, searches therouting table, and judges whether transfer of the file is necessary.When the transfer is necessary, the relay apparatus 10′″A obtains a URLof a relay apparatus of the next stage to which the file should betransferred, stores a character string representing “relay file arrive”and the file identifier I in an entity body of a POST method of an HTTPrequest while separating them by a line feed, and sends the HTTP requestto the relay apparatus 10′″B of the next stage in step 409.

[0138] The relay apparatus 10′″A reads sent file data, starts to storethe file data in an area of the file storing part 13′A which isspecified by the file path PA. Storing of the file data is repeateduntil the received data amount O_S reaches the file size L in the filestoring part 13′A. When all of the file data is stored in the filestoring part 13′A, the relay apparatus 10′″A notifies the send apparatus30 of completion of data storing in step 499. In response to thisnotification, the send apparatus 30 ends the file transfer process.

[0139] When the relay apparatus 10′″B receives the HTTP requestincluding the character string representing “relay file arrive”, therelay apparatus 10′″B stores the character string representing “relayfile arrive” and the file identifier I in an entity body of a POSTmethod of an HTTP request while separating them by a line feed and sendsthe HTTP request to the relay apparatus 10′″C of the next stage in step410.

[0140] When the relay apparatuses 10′″B and 10′″C receive a requestincluding “relay file arrive”, each of the relay apparatuses storescharacter strings representing “relay file request”, the file identifierI, received data amount O_M or O_N (which is 0 in the first time) in anentity body of a POST method while separating these by line feeds, sendsit to the previous stage relay apparatus 10′″A or 10′″B in steps 411 and412. In the above-mentioned second embodiment, when the relayapparatuses 10B and 10C receive “relay file information”, each of therelay apparatuses stores character strings representing “relay filerequest”, the file identifier I, received data amount (which is 0 in thefirst time) in an entity body of a POST method while separating these byline feeds, sends the data to the previous stage relay apparatus. On theother hand, according to the fourth embodiment, “relay file request” isnot performed at the timing of receiving the relay file information,instead, “relay file request” is performed after notification of “relayfile arrive”.

[0141] In response to the receive file request, when the first line ofthe entity body of the POST method is a character string representing“relay file request”, the relay apparatus program of each of the relayapparatus 10′″A and 10′″B of the previous stage reads the fileidentifier I and received data amount O_M or O_N which follow thecharacter string, obtains the file path PA or PB which is associatedwith the file identifier I from the file table of the file storing part13A or 13B, stores data which follows the file data of the file path PAor PB of the received data amount O_M or O_N and a value Z indicatingthe send suspending status in an entity body of an HTTP response, andsends the HTTP response to the relay apparatus 10′″B or 10′″C of thenext stage in steps 413 and 414.

[0142] Each of the relay apparatuses 10′″B and 10′″C which received theHTTP response suspends receiving file data when the value Z representingsend suspending status is “true”. When the value Z representing sendsuspending status is “false”, each of the relay apparatuses 10′″B and10′″C obtains the file path PB or PC of the file which is stored in thefile storing part 13′B or 13′C, and adds following content (remainingdata of the file data) in the entity body of the HTTP response to datawhich is already stored in the file path.

[0143] In each of the relay apparatus 10′″B and 10′″C, the relay filerequest and the corresponding file sending are repeated (L6,7) until thereceived data amount O_M or O_N reaches the file size which is notifiedby the relay information beforehand reaches the file size L, or untilthe value Z representing the originating suspending status becomes“true”.

[0144] The receive apparatus 50 inquires about newly arriving fileinformation addressed to the destination address R to the nearest relayapparatus 10′″C in step 416 in the same way as that of the firstembodiment. In response to this inquiry, the relay apparatus 10′″C sendsthe file identifier I and the file size L to the receive apparatus 50 instep 417.

[0145] The receive apparatus 50 obtains the file path which isregistered by being associated with the file identifier I, obtainsreceived data amount O_R which corresponds to the file path, and storescharacter strings representing “incoming file request”, the fileidentifier I and the received data amount O_R (which is 0 for the firsttime) in an entity body of a POST method while separating them by linefeeds and sends it to the relay apparatus 10′″C in step 419.

[0146] In response to the incoming file request, when the first line ofthe entity body of the received POST method is the character stringrepresenting “relay file request”, the relay apparatus 10′″C reads thefile identifier I and the received data amount O_R which are storedfollowing the character string, obtains the file path PC registeredbeing associated with the file identifier I from a file table of thefile storing part 13′C, stores file data which follows data of thereceived data amount O_R of the file of the file path C and the value Zindicating the send suspending status in an entity body of an HTTPresponse, and sends the HTTP response to the receive apparatus 50 instep 420.

[0147] When the value Z indicating the send suspending status is “true”,the receive apparatus 50 which receives the HTTP response suspendsreceiving the file. When the value Z indicating the send suspendingstatus is “false”, the receive apparatus 50 obtains the file path of thefile which is stored in the incoming file storing part 53, and storesthe following content (remaining data of the file data) in the entitybody of the HTTP response.

[0148] In the receive apparatus 50, sending the file data is repeated(L8) until the received data amount O_R reaches the file size L or untilthe value Z indicating the send suspending status becomes “true”.

[0149] When the send apparatus 30 resumes sending the file, the sendapparatus 30 stores character strings representing stored data amountO_S and the file identifier I in an entity body of a POST method of anHTTP request while separating them by a line feed, and sends the HTTPrequest to the relay apparatus 10′″A in step 412.

[0150] When the first line of the entity body of the POST method is acharacter string representing “stored data amount”, the relay apparatus10′″A reads the file identifier I, obtains the file path PA which isassociated with the file identifier from the file table, stores theamount of data which is stored in the file path PA in an entity body ofan HTTP response and sends the HTTP response to the send apparatus 30.

[0151] The send apparatus 30 reads the stored data amount O_S from theentity body of the HTTP response sent from the relay apparatus 10′″A,and stores character strings representing “originating file” and thefile identifier I in an entity body of a POST method of an HTTP requestwhile separating the character strings by a line feed. After that, thesend apparatus 30 stores file data (binary sequence, for example) F(O_S)which follows data of the received data amount of the file data, andstarts to send the data to the relay apparatus 10″.

[0152] When the first line of the entity body of the POST method is acharacter string representing “originating file”, the relay apparatus10′″A reads the file identifier I, obtains the file path which isassociated with the file identifier I from the file table, reads the“file data” stored in the entity body following the file identifier, andstarts to store the data in a part following the tail end of data whichis already stored in the file path PA. In addition, the value Z of thesend suspending status is changed to “false”.

[0153] When all of the file data are stored in the file storing part 13,that is, when the uploaded file data amount O_S reaches the file size L,the relay apparatus 10′″A notifies the send apparatus 30 of completionof data storing in step 499. In response to the notification, the sendapparatus 30 ends file transfer process.

[0154] Processes hereinafter are performed in the same way as the beforementioned processes (steps 409, 410, 411, 412, 413, 414, 420, L6, L7,L8).

[0155] Although a case that a file is transferred to one receiveapparatus has been described as an example in the above description, thepresent invention can be applied for a case that a file is transferredto a plurality of receive apparatuses (multicast). In this case,destination address group D including addresses R₁-R_(N) of a pluralityof receive apparatuses, instead of destination address R, may be sent tothe relay apparatus 10′″ from the send apparatus 30. The relay apparatus10′″ may store each of the addresses R₁-R_(N) in the file table byassociating it with the file identifier I, the file path P and the filesize L.

[0156] According to the file transfer system of this embodiment, sinceit is informed from a relay apparatus to a next stage relay apparatusthat the send apparatus resumes file sending, the data which the sendapparatus resume sending is resumed to be transferred between the relayapparatuses.

[0157] According to the present invention, since file transfer from thesend apparatus to the relay apparatus is performed concurrently withfile transfer from the relay apparatus to the receive apparatus,receiving can be started before sending is completed. In addition, sinceoriginating file information including the file size of the transferredfile is sent from the send apparatus to the relay apparatus and thereceive apparatus, the receive apparatus can repeat file receiving untilthe received file data reaches the file size. As a result, in the casewhere send speed of the send apparatus is slower than receive speed ofthe receive apparatus, even when data amount received by the receiveapparatus does not reach the file size after the receive apparatusreceives all data which is already stored in the relay apparatus, filetransfer speed can be adjusted by repeating file receiving process afterwaiting until following data is stored in the relay apparatus.

[0158] The present invention is not limited to the specificallydisclosed embodiments, and variations and modifications may be madewithout departing from the scope of the invention.

1. A file transfer system which transfers a file from a send apparatusto a receive apparatus, said file transfer system comprising: said sendapparatus which sends said file; a relay apparatus which relays saidfile; and said receive apparatus which receives said file; said relayapparatus in said file transfer system comprising: a file storing partwhich stores said file, a file identifier, a file size and a destinationaddress, which are associated with each other; a file originatinginformation receiving part which receives file originating informationincluding said file size and said destination address, assigns said fileidentifier to said file, registers said file identifier, said file sizeand said address in said file storing part, and notifies said sendapparatus of said file identifier; a file incoming information sendingpart which judges a destination of said file on the basis of saiddestination address, notifies said receive apparatus of file incominginformation including said file identifier and said file size; anoriginating file receiving part which receives said file identifier andfile data corresponding to said file identifier from said sendapparatus, and stores said file identifier and said file data in saidfile storing part; and an incoming file sending part which receives,from said receive apparatus, said file identifier and a data amountwhich said receive apparatus already received as said file data, andsends, to said receive apparatus, data which is not yet received by saidreceive apparatus in said file data stored in said file storing part;said send apparatus comprising: an originating file storing part whichstores said file and said file identifier, which are associated witheach other; an originating file information sending part which sendsfile originating information including said file size and saiddestination address to said relay apparatus, receives said fileidentifier from said relay apparatus, and stores said file identifier insaid originating file storing part; and an originating file sending partwhich sends said file identifier and said file data corresponding tosaid file identifier to said relay apparatus; said receive apparatuscomprising: an incoming file storing part which stores said file data,said file identifier and said file size, which are associated with eachother; a file incoming information receiving part which receives saidfile incoming information including said file identifier and said filesize from said relay apparatus, and registers said file identifier andsaid file size in said incoming file storing part; and an incoming filereceiving part which performs a procedure repeatedly until received dataamount of said file reaches said file size, wherein, in said procedure,said incoming file receiving part sends said file identifier and saidreceived data amount to said relay apparatus, receives data which is notyet received in said file from said relay apparatus, and adds said datato already received data.
 2. The file transfer system as claimed inclaim 1, said relay apparatus further comprising: a transfer destinationdetermining part which judges whether it is necessary to transfer saidfile to a second relay apparatus on the basis of said destinationaddress, and determines said second relay apparatus when it is necessaryto transfer said file to another relay apparatus; a file relayinformation sending part which sends file relay information includingsaid destination address, said file identifier and said file size tosaid second relay apparatus; a relay file sending part which receivessaid file identifier and a data amount which said second relay apparatusalready received, and sends data which follows data of said data amountwhich said second relay apparatus already received; a file relayinformation receiving part which receives said file relay informationfrom a third apparatus, and registers said destination address, saidfile identifier and said file size included in said file relayinformation in said file storing part; and a relay file receiving partwhich performs a second procedure repeatedly until received data amountof said file reaches said file size, wherein, in said second procedure,said relay file receiving part sends said file identifier and saidreceived data amount to said third relay apparatus, receives data whichis not yet received in said file from said third relay apparatus, andadds said data received from said third relay apparatus to alreadyreceived data.
 3. The file transfer system as claimed in claim 2, saidrelay file sending part further comprising: a part which sendsinformation representing file send status which are associated with saidfile identifier before sending said file data; said relay file receivingpart further comprising a part which receives said informationrepresenting file send status from said third relay apparatus, suspendsdata receiving when said file send status is send suspending status, andreceives data which is not yet received in said file when said file sendstatus is not send suspending status.
 4. The file transfer system asclaimed in claim 1, said file storing part comprising: a part whichstores information representing file send status which indicates whethersaid send apparatus suspends file sending, said information beingassociated with said file identifier; wherein said originating filereceiving part changes said information representing file send status toa value indicating suspending when said send apparatus suspends filesending; and said incoming file receiving part sends said informationrepresenting file send status before sending said file data to saidreceive apparatus; said relay apparatus further comprising: a receiveddata amount responding part which notifies said send apparatus ofreceived data amount of said file stored in said file storing part whensaid relay apparatus receives inquiry about said received data amountfrom said send apparatus; wherein  said originating file sending part insaid send apparatus sends data which follows data of said received dataamount to said relay apparatus when said send apparatus resumes filesending; and  said incoming file receiving part in said receiveapparatus receives said information representing file send status fromsaid relay apparatus, suspends file receiving when said file send statusis suspending status, and receives data which is not yet received insaid file when said file send status is not suspending status.
 5. Thefile transfer system as claimed in claim 1, said file incominginformation receiving part in said receiving apparatus comprising: apart which sends said destination address to said relay apparatus; saidfile incoming information sending part in said relay apparatuscomprising: a part which receives said destination address and sendssaid incoming file information on a file destined for said destinationaddress.
 6. The file transfer system as claimed in claim 1, wherein saidoriginating file information sending part assigns said file identifierto said file to be transferred, including said file identifier to saidoriginating file information; said file originating informationreceiving part in said relay apparatus obtains said file identifierincluded in said originating file information instead of assigning saidfile identifier to said file.
 7. The file transfer system as claimed inclaims 1-6, said data amount is a number of bytes.
 8. A relay apparatuswhich transfers a file from a send apparatus to a receive apparatus viaa network, comprising: an incoming file sending part which receives afile identifier and downloaded data amount from said receive apparatus;a file storing part which stores said file identifier and file data ofsaid file, which are associated with each other, and passes file dataaccording to said file identifier and said downloaded data amount tosaid incoming file sending part; wherein said incoming file sending partsends said file data according to said downloaded data amount to saidreceive apparatus.
 9. The relay apparatus as claimed in claim 8, furthercomprising: a transfer destination determining part which returns anaddress of another relay apparatus corresponding to a destinationaddress; a file relay information sending part which receives saidaddress of said another relay apparatus from said transfer destinationdetermining part, and sends file relay information by using saidaddress.
 10. The relay apparatus as claimed in claims 8 or 9, said filestoring part further comprising a field in which file send status isrecorded; said relay apparatus further comprising: a received dataamount responding part which sends, to said send apparatus, data amountin said file data which is already sent from said send apparatus to saidrelay apparatus.
 11. A send apparatus in a file transfer system whichincludes said send apparatus sending a file, a relay apparatus relayingsaid file and a receive apparatus receiving said file, comprising: anoriginating file storing part which stores said file and a fileidentifier, which are associated with each other; an originating fileinformation sending part which sends file originating informationincluding a file size and a destination address of said file to saidrelay apparatus, receives said file identifier assigned to said filefrom said relay apparatus, and stores said file identifier in saidoriginating file storing part; an originating file sending part whichsends said file identifier and file data corresponding to said fileidentifier to said relay apparatus.
 12. The send apparatus as claimed inclaim 11, wherein said send apparatus sends data which follows data of asent data amount which is informed from said relay apparatus to saidrelay apparatus when said send apparatus resumes file sending aftersuspending file sending.
 13. The send apparatus as claimed in claim 11,wherein said originating file information sending part assigns said fileidentifier to said file, and includes said file identifier which isassigned by said send apparatus to said originating file information.14. A receive apparatus in a file transfer system which includes a sendapparatus sending a file, a relay apparatus relaying said file and saidreceive apparatus receiving said file, comprising: an incoming filestoring part which stores file data, a file identifier and a file sizeof said file, which are associated with each other; a file incominginformation receiving part which receives file incoming informationincluding said file identifier and said file size from said relayapparatus, and registers said file identifier and said file size in saidincoming file storing part; an incoming file receiving part whichperforms a procedure repeatedly until received data amount of said filereaches said file size, wherein, in said procedure, said incoming filereceiving part sends said file identifier and said received data amountto said relay apparatus, receives data which is not yet received in saidfile from said relay apparatus, and adds said data to already receiveddata.
 15. The receive apparatus as claimed in claim 14, wherein saidincoming file receiving part receives information representing file sendstatus from said relay apparatus, suspends file receiving when said filesend status is suspending status, and receives data which is not yetreceived in said file when said file send status is not suspendingstatus.
 16. A file transfer method used when a file is sent from a sendapparatus to a receive apparatus via a network, said file transfermethod comprising the steps of: generating a file identifier used foridentifying said file when receiving a request of file sending;receiving a file size from said send apparatus before receiving data ofsaid file and storing said file size and said file identifier, which areassociated with each other, requesting said send apparatus to send filedata until received data reaches said file size; sending said fileidentifier and said file size to said receive apparatus before sendingsaid file data to said receive apparatus; sending said file data to saidreceive apparatus until data amount received by said receive apparatusreaches said file size.
 17. The file transfer method as claimed in claim16, further comprising the steps of: judging whether it is necessary totransfer said file according to a destination address of said file;determining transfer destination when transfer of said file isnecessary; sending file relay information including said destinationaddress, said file identifier and said file size to said transferdestination.
 18. The file transfer method as claimed in claims 16 or 17,further comprising the steps of: sending file send status whichindicates whether said send apparatus suspends file sending to saidreceive apparatus before sending said data; wherein said receiveapparatus suspends file receiving when said file send status indicatessuspending, receives data which is not yet received in said file whensaid file send status does not indicate suspending.
 19. A computerreadable medium storing program code for causing a computer to transfera file from a send apparatus to a receive apparatus via a network, saidcomputer readable medium comprising: program code means for generating afile identifier used for identifying said file when receiving a requestof file sending; program code means for receiving a file size from saidsend apparatus before receiving data of said file and storing said filesize and said file identifier, which are associated with each other,program code means for requesting said send apparatus to send file datauntil received data reaches said file size; program code means forsending said file identifier and said file size to said receiveapparatus before sending said file data to said receive apparatus;program code means for sending said file data to said receive apparatusuntil data amount received by said receive apparatus reaches said filesize.
 20. The computer readable medium as claimed in claim 19, furthercomprising: program code means for judging whether it is necessary totransfer said file according to a destination address of said file;program code means for determining transfer destination when transfer ofsaid file is necessary; program code means for sending file relayinformation including said destination address, said file identifier andsaid file size to said transfer destination.
 21. The computer readablemedium as claimed in claims 19 or 20, further comprising: program codemeans for sending file send status which indicates whether said sendapparatus suspends file sending before sending said file.
 22. A computerreadable medium storing program code for causing a computer to performprocesses of a send apparatus in a file transfer system which includessaid send apparatus sending a file, a relay apparatus relaying said fileand a receive apparatus receiving said file, said computer readablemedium comprising: program code means for sending file originatinginformation including a file size and a destination address of said fileto said relay apparatus,; program code means for receiving said fileidentifier assigned to said file from said relay apparatus, and storingsaid file identifier; program code means for sending said fileidentifier and file data corresponding to said file identifier to saidrelay apparatus.
 23. The computer readable medium as claimed in claim22, further comprising: program code means for sending data whichfollows data of a sent data amount which is informed from said relayapparatus to said relay apparatus when said send apparatus resumes filesending after suspending file sending.
 24. A computer readable mediumstoring program code for causing a computer to perform processes of areceive apparatus in a file transfer system which includes a sendapparatus sending a file, a relay apparatus relaying said file and saidreceive apparatus receiving said file, comprising: program code meansfor receiving file incoming information including a file identifier anda file size from said relay apparatus; program code means for performinga procedure repeatedly until received data amount of said file reachessaid file size, wherein, in said procedure, said computer sends saidfile identifier and said received data amount to said relay apparatus,receives data which is not yet received in said file from said relayapparatus, and adds said data to already received data.
 25. The computerreadable medium as claimed in claim 24, further comprising: program codemeans for receiving information representing file send status from saidrelay apparatus, suspending file receiving when said file send status issuspending status, and receiving data which is not yet received in saidfile when said file send status is not suspending status.
 26. A programfor causing a computer to transfer a file from a send apparatus to areceive apparatus via a network, said program comprising: program codemeans for generating a file identifier used for identifying said filewhen receiving a request of file sending; program code means forreceiving a file size from said send apparatus before receiving data ofsaid file and storing said file size and said file identifier which areassociated with each other, program code means for requesting said sendapparatus to send file data until received data reaches said file size;program code means for sending said file identifier and said file sizeto said receive apparatus before sending said file data to said receiveapparatus; program code means for sending said file data to said receiveapparatus until data amount received by said receive apparatus reachessaid file size.
 27. The program as claimed in claim 26, furthercomprising: program code means for judging whether it is necessary totransfer said file according to a destination address of said file;program code means for determining transfer destination when transfer ofsaid file is necessary; program code means for sending file relayinformation including said destination address, said file identifier andsaid file size to said transfer destination.
 28. The program as claimedin claims 26 or 27, further comprising: program code means for sendingfile send status which indicates whether said send apparatus suspendsfile sending before sending said file.
 29. A program for causing acomputer to perform processes of a send apparatus in a file transfersystem which includes said send apparatus sending a file, a relayapparatus relaying said file and a receive apparatus receiving saidfile, said program comprising: program code means for sending fileoriginating information including a file size and a destination addressof said file to said relay apparatus; program code means for receivingsaid file identifier assigned to said file from said relay apparatus,and storing said file identifier; program code means for sending saidfile identifier and file data corresponding to said file identifier tosaid relay apparatus.
 30. The program as claimed in claim 29, furthercomprising: program code means for sending data which follows data of asent data amount which is informed from said relay apparatus to saidrelay apparatus when said send apparatus resumes file sending aftersuspending file sending.
 31. A program for causing a computer to performprocesses of a receive apparatus in a file transfer system whichincludes a send apparatus sending a file, a relay apparatus relayingsaid file and said receive apparatus receiving said file, comprising:program code means for receiving file incoming information including afile identifier and a file size from said relay apparatus; program codemeans for performing a procedure repeatedly until received data amountof said file reaches said file size, wherein, in said procedure, saidcomputer sends said file identifier and said received data amount tosaid relay apparatus, receives data which is not yet received in saidfile from said relay apparatus, and adds said data to already receiveddata.
 32. The program as claimed in claim 31, further comprising:program code means for receiving information representing file sendstatus from said relay apparatus, suspending file receiving when saidfile send status is suspending status, and receiving data which is notyet received in said file when said file send status is not suspendingstatus.